package com.xuecheng.content.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.content.model.dto.CoursePubDTO;
import com.xuecheng.common.domain.response.RestResponse;
import com.xuecheng.content.entity.CoursePub;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程发布 服务类
 * </p>
 *
 * @author itcast
 * @since 2021-04-08
 */
public interface CoursePubService extends IService<CoursePub> {

    /**
     * <p>
     * 生成课程预览页面数据
     * </p>
     *
     * @param courseId  课程id
     * @param companyId 机构id
     * @return Map<String, Object>
     */
    Map<String, Object> preview(Long courseId, Long companyId);

    /**
     * <p>
     *
     * </p>
     *
     * @param courseId  课程id
     * @param companyId 机构id
     * @return void
     */
    void publish(Long courseId, Long companyId);

    /**
     * <p>
     * 创建或修改课程发布
     * </p>
     *
     * @param courseId 课程id
     * @return CoursePub
     */
    void createOrModifyCoursePub(Long courseId);


    /**
     * 远端调用查询 课程发布信息
     *
     * @param coursePubId
     * @return
     */
    RestResponse<CoursePubDTO> getCoursePubById(Long coursePubId);

    /**
     * 根据教育机构id查询课程发布集合
     *
     * @param companyId
     * @return
     */
    RestResponse<List<CoursePubDTO>> getCoursePubByCompanyId(Long companyId);

    /**
     * 运营平台审核预览
     *
     * @param courseBaseId
     * @return
     */
    Map<String, Object> auditPreview(Long courseBaseId);

    /**
     * <p>
     *远端调用查询 课程发布信息
     * </p>
     *
     * @param courseId 课程id
     * @return RestResponse<CoursePubDTO>
     */
    RestResponse<CoursePubDTO> getCoursePubByCourseId(Long courseId);
}
